Implementimi nderlidhes

Pasi kemi ndertuar shabllonin grafik HTML, CSS dhe kemi implementuar klasat e nevojshme per t'i lehtesuar pune vetes qe do te kryejne nje sere funksionesh, vjen momenti qe cdo gje duhet lidhur sebashku ne menyre qe te prodhojme nje faqe funksionale.

Ne kete seksion nuk do te sqarojme cdo faqe me perpikmeri, pasi ky liber do te shoqerohet me komplet kodin e projektit final te ndertuar ku do te jeni te lire te kontrolloni me detaje.

header.php

Ne direktorine rrenje te projektit kemi skedarin header.php i cili eshte koka e seciles prej faqeve ne vazhdim. Ne kete faqe gjendet logoja, menuja si dhe fusha e kerkimit. Pjesa dinamike ne kete faqe eshte:

  1. Elementi i menu-se HYR duhet te kthehet ne DIL kur perdoruesi eshte i loguar dhe ne HYR kur perdoruesi nuk eshte i loguar. E implementojme si me poshte:
<ul class="nav navbar-nav navbar-right">
    <?php if (AuthUser::is_logged()) { ?>
        <li><a href="/admin/logout.php">DIL</a></li>
    <?php } else { ?>
        <li><a href="/login.php">HYR</a></li>
    <?php } ?>
</ul>

Sic shihet kontrolli nese perdoruesi eshte i loguar behet me ane te metodes is_logged te klases AuthUser. Kur perdoruesi eshte i loguar printohet elementi <li> qe ka tekstin DIL dhe href me vlere /admin/logout.php. logout.php do te jete nje skedar qe do te clogoje perdoruesin nga sistemi. Elementi HYR na drejton tek faqja login.php qe renderizon formen e logimit.

  1. Forma e kerkimit duhet te jete dinamike ne menyre qe kur te kerkojme te ridrejtohemi tek nje faqe e caktuar se bashku me nje kerkese POST me fjalet qe kemi kerkuar.
<form method="post" action="/articles.php" class="navbar-form navbar-right">
    <div class="input-group">
        <input type="text" class="form-control search-input input-sm" name="kerkesa"
               placeholder="Kerko">
        <div class="input-group-btn">
            <button class="btn btn-default btn-sm" type="submit" name="kerko"><i class="fa fa-search"></i>
            </button>
        </div>
    </div>
</form>

Ne atributin action te formes shohim vleren /articles.php. Pasi perdoruesi shkruan dicka dhe klikon mbi butonin Kerko faqja do te drejtohet tek articles.php sebashku me tekstin qe ka kerkuar perdoruesi.

index.php

Pjeset dinamike ne kete faqe jane lista e departamenteve, lista e njoftimeve dhe lista e lajmeve. Ne krye te faqes shtojme kodin e meposhtem:

<?php

require_once "config.php";
require_once "models/Departament.php";
require_once "models/Njoftim.php";
require_once "models/Artikull.php";
require_once "libs/AuthUser.php";

$departamentet = Departament::getList();

$id_departament = "";
$kushti = "1 LIMIT 4";

if (isset($_GET['id_dep']) && is_numeric($_GET['id_dep'])) {
    $id_departament = $_GET['id_dep'];
    $kushti = "id_departament = {$_GET['id_dep']} LIMIT 4";
}

$njoftimet = Njoftim::getList($kushti);
$artikujt = Artikull::getList($kushti);

include "header.php"

?>

Pasi kemi bere importimet e nevojshme te skedareve qe do te perdoren, marrim listen e departamenteve duke therritur metoden Departament::getList(). Lajmet dhe njoftimet merren ne baze te nje kushti. Fillimisht kushti eshte 1 LIMIT 4. Arsyeja e ketij kushtin eshte se kur ta kalojme tek funksioni getList($kushti) ne databaze do te behet nje thirrje e tille: SELECT * FROM njoftimet WHERE 1 LIMIT 4. Ne kushtin WHERE gjendet vlera 1 pra qe eshte gjithmone e vertete. Kjo eshte si nje vlere e parazgjedhur ne rast se nuk ka ndonje kusht specifik.

Njoftimet dhe lajmet ne faqen e pare duam ti bejme ne varesi te departamentit te klikuar tek lista e departamenteve, ndaj kontrollohet nqs. eshte vendosur atributi ne url $_GET['id_dep'] dhe ne rast se po atehere $kushti do te marre nje vlere tjeter: id_departament = {$_GET['id_dep']} LIMIT 4. Ne kete rast thirrja qe do te behet ne databaze pasi te kemi therritur funksionin getList($kushti) do te jete: SELECT * FROM njoftimet WHERE id_departament=? LIMIT 4. ? varet nga id-ja e departamentit te kaluar ne url. Kjo ben te mundur filtrimin e artikujve dhe njoftimeve ne baze te departamentit.

Terheqja e njoftimeve dhe artikujeve nga baza e te dhenave behet duke therritur metodat perkates ::getList($kushti).

Pasi kemi kryer te gjitha veprimet e mesiperme importohet skedari header.php qe do te jete koka e faqes: include "header.php". Me tutje vjen kodi HTML i kesaj faqeje por me disa ndryshime ne disa pjese te saj per ta konvertuar me permbajtje dinamike:

  • Lista e departamenteve

Pasi morrem listen e departamenteve nga baza e te dhenave: $departamentet = Departament::getList();, e perdorim kete liste per te listuar departamentet ne faqe.

<div class="col-sm-12 col-md-4 side-options">
    <ul>
        <?php foreach ($departamentet as $dep) { ?>
            <li class="<?php echo ($id_departament == $dep->getId()) ? 'active' : ''; ?>"><a
                    href="/index.php?id_dep=<?php echo $dep->getId(); ?>"><?php echo $dep->emri; ?></a>
            </li>
        <?php } ?>
    </ul>
</div>
  • Lista e njoftimeve
<div class="col-md-4 news-row">
    <div class="border"></div>
    <?php foreach ($njoftimet as $i => $njof) {

        if ($i % 2 != 0) {
            continue;
        }

        ?>

        <div class="news-item">
            <h3 class="news-title"><?php echo $njof->titulli; ?></h3>
            <p class="news-content"><a href="#"><?php echo $njof->pershkrimi; ?></a></p>
        </div>

    <?php } ?>
</div>

Pjesa e kodit if ($i % 2 != 0) { continue; } sherben ne menyre qe ne kolonen e pare te printohen vetem njoftimet me indekse cifte. Ne kolonen tjeter te printohen njoftimet me indekse teke, si me poshte:

<div class="col-md-4 news-row no-pd-left">
    <div class="border"></div>

    <?php foreach ($njoftimet as $i => $njof) {

        if ($i % 2 == 0) {
            continue;
        }

        ?>

        <div class="news-item">
            <h3 class="news-title"><?php echo $njof->titulli; ?></h3>
            <p class="news-content"><a href="#"><?php echo $njof->pershkrimi; ?></a></p>
        </div>


    <?php } ?>
</div>
  • Lista e artikujve
<div class="col-sm-4 no-pd-left side-archive">
    <h5 class="side-arkiva">LAJME</h5>

    <?php foreach ($artikujt as $i => $artik) { ?>

        <div class="col-md-12 news-item">
            <h3 class="news-title"><?php echo $artik->titulli; ?></h3>
            <p class="news-content"><a href="#"><?php echo $artik->pershkrimi; ?></a></p>
        </div>

    <?php } ?>
</div>

login.php

Faqja login.php na sherben per te autentikuar nje perdorues ne sistem. Ne krye te faqes vendoset kodi i meposhtem:

<?php
require_once "config.php";
require_once "libs/AuthUser.php";

if (isset($_POST['login'])) {

    $email = $_POST['email'];
    $password = $_POST['password'];

    $perdorues = AuthUser::authenticate($email, md5($password));

    if ($perdorues !== false) {

        AuthUser::save($perdorues->toArray());
        header("Location: admin/profile.php");
        exit();

    } else {

        $error_msg = "Kredenciale te gabuara!";

    }
}

include "header.php"

?>

Ne momentin qe perdoruesi te klikoje mbi butonin HYR, do te ekzekutohet pjesa e kodit brenda kushtit if (isset($_POST['login'])) { ... }. Perdorim metoden statike authenticate te klases AuthUser per te verifikuar kredencialet e perdoruesit. Ne rast se vlera qe kthehet eshte e ndryshme nga false atehere autentikimi eshte i suksesshem dhe ruajme nje sesion per perdoruesin e loguar AuthUser::save($perdorues->toArray());. Te dhenat e perdoruesit ne sesion ruhen ne forme array duke konvertuar $perdorues ne array me ane te metodes $perdorues->toArray(). Pasi perdoruesi logohet ne sistem ridrejtohemi tek admin/profile.php. Ne rast se kredencialet e perdoruesit nuk jane te sakta variabli $error_msg do te marre vleren Kredenciale te gabuara!.

Ne kete rast duhet te renderizojme mesazhin ne ekran, ndaj mbi HTML-ne e formes shtojme:

<?php if (isset($error_msg)) { ?>
    <p class="alert alert-danger text-center"><?php echo $error_msg; ?></p>
<?php } ?>

Password-et ne bazen e te dhenave ruhen te ekriptuara me MD5, ndaj edhe kur verifikojme kredencialet e perdoruesit perdorim md5($password).

admin/profile.php

Kjo eshte faqja ku ridrejtohet perdoruesi pas nje autentikimi te suksesshem. Ne krye te kesaj faqeje kemi kodin e meposhtem:

<?php
require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

include WEBROOT . "header.php"

?>

Pjesa e kodit:

<?php
if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

eshte shume e rendesishme, pasi eshte ajo qe ben mbrojtjen e faqeve qe kane nevoje per autentikim. Ajo cfare ben kjo pjese kodi eshte qe ne rast se perdoruesi nuk eshte i loguar e ridrejton tek /login.php.

Ne faqen profile.php printohet mesazhi "Mire se Erdhe" dhe me poshte emri i perdoruesit. Emri i perdoruesit eshte dinamik ne varesi te atij qe eshte loguar, ndaj vendosim kodin e meposhtem:

<div class="pg-description">

    <h3 class="text-center">Mire se Erdhe</h3>
    <hr style="border-color: #860000">
    <h3 class="text-center">
        <strong>
            <?php
            $logged_user = AuthUser::get();
            echo $logged_user["emri"];
            ?>
        </strong>
    </h3>
</div>

Kodi $logged_user = AuthUser::get(); merr te dhenat e perdoruesit aktual te loguar (Te dhenat qe vendosen me metoden ::save() ne momentin e logimit). Keto te dhena jane ne forme array, ndaj printojme emrin echo $logged_user["emri"].

admin/user_list.php

Ne profilin e perdoruesit, ne menune majtas mund te klikojme mbi elementin Perdoruesit per te pare listen e perdoruesve aktual te sistemit. Nese klikojme mbi kete element do te na hapet faqja admin/user_list.php, me ne krye kodin e meposhtem:

<?php
require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";
require_once WEBROOT . "models/Perdorues.php";
require_once WEBROOT . "models/Departament.php";

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

//Kjo faqe mund te administrohet vetem nga administratoret dhe jo pedagoget
$logged_user = Perdorues::getById(AuthUser::get()["id"]);
if (!$logged_user->isAdmin()) {
    header("Location: /admin/profile.php");
}

$perdoruesit = Perdorues::getList();

include WEBROOT . "header.php"

?>

Normalisht faqja eshte e mbrojtur qe te aksesohet vetem nga perdoruesit me ane te kodit te meposhtem:

<?php

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

Sa i perket menaxhimit te perdoruesve si lexim, shtim, modifikim, fshirje duhet te behet vetem nga administratoret dhe jo pedagoget, ndaj e kemi mbrojtur faqen me kodin e meposhtem:

<?php

$logged_user = Perdorues::getById(AuthUser::get()["id"]);
if (!$logged_user->isAdmin()) {
    header("Location: /admin/profile.php");
}

Ne rast se perdoruesi nuk eshte administrator ai do te ridrejtohet tek faqja /admin/profile.php, pra nuk do te lejohet te aksesoje user_list.php.

Lista e perdoruesve renderizohet ne formen e meposhtme:

<table class="table table-stripped">
    <thead>
    <tr>
        <th>Emri</th>
        <th>Email</th>
        <th>Tipi</th>
        <th>Departamenti</th>
        <th>Veprimi</th>
    </tr>
    </thead>
    <tbody>
    <? foreach ($perdoruesit as $perdorues) { ?>
        <tr>
            <td><?= $perdorues->emri ?></td>
            <td><?= $perdorues->email ?></td>
            <td><?= ($perdorues->tipi == "0") ? "admin" : "pedagog"; ?></td>
            <td><?
                $departament = Departament::getById($perdorues->id_departament);
                echo $departament->emri;
                ?></td>
            <td>
                <a class="btn btn-info" href="/admin/user_edit.php?id=<?= $perdorues->getId(); ?>"><i class="fa fa-pencil"></i></a>
                <a class="btn btn-danger" href="/admin/user_delete.php?id=<?= $perdorues->getId(); ?>"><i class="fa fa-times"></i></a>
            </td>
        </tr>
    <? } ?>
    </tbody>
</table>

Ne tabelen e perdoruesve kemi edhe dy butona qe do te na ridrejtojne per tek faqja e modifikimit, dhe fishrja e perdoruesit:

<a class="btn btn-info" href="/admin/user_edit.php?id=<?= $perdorues->getId(); ?>"><i class="fa fa-pencil"></i></a>
<a class="btn btn-danger" href="/admin/user_delete.php?id=<?= $perdorues->getId(); ?>"><i class="fa fa-times"></i></a>

Ne te dyja rastet i kemi kaluar si parameter ne url, id-ne e perdoruesit: ?id=<?= $perdorues->getId(); ?>. Kjo id do ti identifikoje ata ne faqet perkatese.

admin/user_create.php

Kjo faqe renderizon formen per krijimin e nje perdoruesi. Ne krye te faqes vendoset kodi i meposhtem:

<?php
require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";
require_once WEBROOT . "models/Departament.php";
require_once WEBROOT . "models/Perdorues.php";

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

//Kjo faqe mund te administrohet vetem nga administratoret dhe jo pedagoget
$logged_user = Perdorues::getById(AuthUser::get()["id"]);
if (!$logged_user->isAdmin()) {
    header("Location: /admin/profile.php");
}

$emri = isset($_POST['emri']) ? $_POST['emri'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
$password_conf = isset($_POST['password_conf']) ? $_POST['password_conf'] : null;
$tipi = isset($_POST['tipi']) ? $_POST['tipi'] : null;
$id_departament = isset($_POST['id_departament']) ? $_POST['id_departament'] : null;

$departamentet = Departament::getList();

if (isset($_POST['ruaj'])) {

    $error_msg = null;
    if ($emri == "") {
        $error_msg = "Emri eshte fushe e detyrueshme.";
    } elseif ($email == "") {
        $error_msg = "Email eshte fushe e detyrueshme.";
    } elseif ($password == "") {
        $error_msg = "Password eshte fushe e detyrueshme.";
    } elseif ($tipi == "") {
        $error_msg = "Tipi eshte fushe e detyrueshme.";
    } elseif ($id_departament == "") {
        $error_msg = "Departamenti eshte fushe e detyrueshme.";
    } elseif ($password != $password_conf) {
        $error_msg = "Ju lutem, konfirmoni passwordin ne menyre te sakte.";
    }

    if (is_null($error_msg)) {

        $perdorues = new Perdorues();
        $perdorues->emri = $emri;
        $perdorues->email = $email;
        $perdorues->password = md5($password);
        $perdorues->tipi = $tipi;
        $perdorues->id_departament = $id_departament;
        $perdorues->save();

        header("Location: /admin/user_list.php");
        exit();
    }
}

include WEBROOT . "header.php"

?>

Fillimisht behet mbrojtja e faqeve duke kontrolluar nese jemi loguar, dhe nese jemi administrator apo jo. Me pas per te gjitha fushat e formes vendosen vlerat:

<?php

$emri = isset($_POST['emri']) ? $_POST['emri'] : null;

Kontrollohet nese eshte vendosur $_POST['emri'], pra nese eshte bere submit forma, dhe nese po variabli $emri merr vleren $_POST['emri'], perndryshe merr vleren null ose bosh. Kjo gje behet per te gjitha fushat.

Ne momentin qe perdoruesi do te klikoje mbi butonin Ruaj do te ekzekutohet kodi brenda kushtit if (isset($_POST['ruaj'])) { ... }.

<?php

$error_msg = null;
if ($emri == "") {
    $error_msg = "Emri eshte fushe e detyrueshme.";
} elseif ($email == "") {
    $error_msg = "Email eshte fushe e detyrueshme.";
} elseif ($password == "") {
    $error_msg = "Password eshte fushe e detyrueshme.";
} elseif ($tipi == "") {
    $error_msg = "Tipi eshte fushe e detyrueshme.";
} elseif ($id_departament == "") {
    $error_msg = "Departamenti eshte fushe e detyrueshme.";
} elseif ($password != $password_conf) {
    $error_msg = "Ju lutem, konfirmoni passwordin ne menyre te sakte.";
}

Kodi i mesiperm ben validimin e inputeve qe ka dhene perdoruesi. Fillimisht $error_msg ka vleren null. Ne momentin kur forma behet submit, ne rast se emri eshte lene bosh, variabli $error_msg do marre vleren Emri eshte fushe e detyrueshme.. Po keshtu edhe kontrollet e tjera bejne vleresimin e te dhenave te futura nga perdoruesi.

Me pas:

<?php

if (is_null($error_msg)) {

    $perdorues = new Perdorues();
    $perdorues->emri = $emri;
    $perdorues->email = $email;
    $perdorues->password = md5($password);
    $perdorues->tipi = $tipi;
    $perdorues->id_departament = $id_departament;
    $perdorues->save();

    header("Location: /admin/user_list.php");
    exit();
}

Behet kontrolli nqs. $error_msg vazhdon te jete null atehere do te thote se nuk eshte gjeneruar asnje gabim pas validimit. Keshtuqe vazhdohet me ruajtjen e perdoruesit ne databaze. Krijojme objektin $perdorues te tipit Perdorues, dhe u japim vlere te gjithe anetareve te saj. Ne fund therrasim metoden $perdorues->save(); qe ben ruajtjen e nje rekordi te ri ne tabelen perdoruesit.

Mbi kodin HTML te formes renderizojme mesazhin e gabimit nqs. ka:

<?php if (isset($error_msg)) { ?>
    <p class="alert alert-danger text-center"><?php echo $error_msg; ?></p>
<?php } ?>

Ashtu si krijimi i perdoruesit funksionon edhe pjesa e modifikimit vetem me disa ndryshime.

admin/user_edit.php

Qe te funksionoje faqja e mesiperme jemi te detyruar qe ti kalojme disa parametra ne URL ne momentin e hapjes, si ne formen e meposhtme:

    www.domain.com/admin/user_edit.php?id=1

Ne kete rast id=1 eshte id-ja e perdoruesit qe do te modifikojme. Le te shohim kodin ne krye te faqes:

<?php
require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";
require_once WEBROOT . "models/Departament.php";
require_once WEBROOT . "models/Perdorues.php";

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

//Kjo faqe mund te administrohet vetem nga administratoret dhe jo pedagoget
$logged_user = Perdorues::getById(AuthUser::get()["id"]);
if (!$logged_user->isAdmin()) {
    header("Location: /admin/profile.php");
}

if (!isset($_GET["id"])) {
    header("Location: /admin/user_list.php");
}

$perdorues = Perdorues::getById($_GET["id"]);

$emri = isset($_POST['emri']) ? $_POST['emri'] : $perdorues->emri;
$email = isset($_POST['email']) ? $_POST['email'] : $perdorues->email;
$password = isset($_POST['password']) ? $_POST['password'] : null;
$password_conf = isset($_POST['password_conf']) ? $_POST['password_conf'] : null;
$tipi = isset($_POST['tipi']) ? $_POST['tipi'] : $perdorues->tipi;
$id_departament = isset($_POST['id_departament']) ? $_POST['id_departament'] : $perdorues->id_departament;

$departamentet = Departament::getList();

if (isset($_POST['ruaj'])) {

    $error_msg = null;
    if ($emri == "") {
        $error_msg = "Emri eshte fushe e detyrueshme.";
    } elseif ($email == "") {
        $error_msg = "Email eshte fushe e detyrueshme.";
    } elseif ($tipi == "") {
        $error_msg = "Tipi eshte fushe e detyrueshme.";
    } elseif ($id_departament == "") {
        $error_msg = "Departamenti eshte fushe e detyrueshme.";
    } elseif ($password != "" && $password != $password_conf) {
        $error_msg = "Ju lutem, konfirmoni passwordin ne menyre te sakte.";
    }

    if (is_null($error_msg)) {

        $perdorues->emri = $emri;
        $perdorues->email = $email;

        if (!is_null($password)) {
            $perdorues->password = md5($password);
        }

        $perdorues->tipi = $tipi;
        $perdorues->id_departament = $id_departament;
        $perdorues->save();

        $success_msg = "Perdoruesi u modifikua me sukses.";
    }
}

include WEBROOT . "header.php"

?>

Behet kontrolli nese eshte vendosur ose jo parametri ne url:

<?php

if (!isset($_GET["id"])) {
    header("Location: /admin/user_list.php");
}

Ne rast se parametri ne url nuk eshte vendosur atehere nuk mund te vazhdoje me tej dhe ridrejtohet faqja tek lista e perdoruesve /admin/user_list.php. Nepermjet parametrit id te kaluar ne url ne marrim nga databaza perdoruesin qe po modifikohet: $perdorues = Perdorues::getById($_GET["id"]);.

Ne ndryshim nga rasti i krijimit, ne kete rast fushave u japim si vlera default, vlerat qe merren nga databaze:

<?php

//Ne rast se nuk eshte vendosur POST per kete fushe atehere jepi vleren qe u mor nga databaza.

$emri = isset($_POST['emri']) ? $_POST['emri'] : $perdorues->emri;
...

Ne rastin e modifikimit nuk krijojme objekt te ri, por perdorim objektin qe terhoqem nga databaza nepermjet $perdorues = Perdorues::getById($_GET["id"]);.

<?php

$perdorues->emri = $emri;
$perdorues->email = $email;

if (!is_null($password)) {
    $perdorues->password = md5($password);
}

$perdorues->tipi = $tipi;
$perdorues->id_departament = $id_departament;
$perdorues->save();

$success_msg = "Perdoruesi u modifikua me sukses.";

Per te renderizuar edhe mesazhin e suksesshem shtojme kodin HTML te meposhtem mbi forme:

<?php if (isset($error_msg)) { ?>
    <p class="alert alert-danger text-center"><?php echo $error_msg; ?></p>
<?php } ?>

<?php if (isset($success_msg)) { ?>
    <p class="alert alert-success text-center"><?php echo $success_msg; ?></p>
<?php } ?>

admin/user_delete.php

Ne momentin qe do te klikohet butonin per fshirjen e nje perdoruesi, do te ridrejtohemi tek faqja admin/user_delete.php, por sebashku me nje id te kaluar ne url si parameter. Kjo id do te identifikoje se cilin perdorues duam te fshijme, si me poshte:

<?php
require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";
require_once WEBROOT . "models/Perdorues.php";

if (!AuthUser::is_logged()) {
    header("Location: /login.php");
}

//Kjo faqe mund te administrohet vetem nga administratoret dhe jo pedagoget
$logged_user = Perdorues::getById(AuthUser::get()["id"]);
if (!$logged_user->isAdmin()) {
    header("Location: /admin/profile.php");
}

if (!isset($_GET["id"])) {
    header("Location: /admin/user_list.php");
}

$perdorues = Perdorues::getById($_GET['id']);
$perdorues->delete();
header("Location: /admin/user_list.php");

Pasi behen kontrollet e nevojshme:

  • Kontrolli nese jemi te loguar ne sistem
  • Kontrolli nese jemi administrator (sepse perdoruesit menaxhohen vetem nga administratoret, dhe jo pedagoget)
  • Kontrolli nese kemi kaluar si parameter ne url nje id atehere marrim perdoruesin nga baza e te dhenave $perdorues = Perdorues::getById($_GET['id']);, dhe e fshijme ate $perdorues->delete();. Ne fund ridrejtohemi tek lista e perdoruesve /admin/user_list.php.

Si te gjitha faqet e krijuara me siper user_list.php, user_create.php, user_edit.php dhe user_delete.php, e njejta ide ndiqet edhe per artikujt dhe njoftimet. Pra do te krijojme skedar me emrat:

  • notice_list.php, notice_create.php, notice_edit.php dhe notice_delete.php
  • article_list.php, article_create.php, article_edit.php dhe article_delete.php

Ne rastin e ketyre faqeve nuk do te kemi kontroll per administrator, pasi keto faqe menaxhohen edhe nga pedagoget. Pjesa tjeter eshte pak a shume e njejte vetem se perdoren klasat respektive Njoftim dhe Artikull ne vend te klases Perdorues.

admin/logout.php

Ne kete faqe fshihet sesioni i perdoruesit te loguar me ane te AuthUser::logout(); dhe ridrejtohemi tek faqja e logimit /login.php:

<?php

require_once "config.php";
require_once WEBROOT . "libs/AuthUser.php";

AuthUser::logout();

header("Location: /login.php");
exit();

results matching ""

    No results matching ""